home *** CD-ROM | disk | FTP | other *** search
/ Aminet 23 / Aminet 23 (1998)(GTI - Schatztruhe)[!][Feb 1998].iso / Aminet / dev / lang / nrcobol_1b.lha / NRCOBOL1b / COBFILES / FLIGHTS2.COB < prev    next >
Text File  |  1997-07-24  |  22KB  |  547 lines

  1.        IDENTIFICATION DIVISION.
  2.        PROGRAM-ID.   FLIGHTS2.
  3.       *PROGRAM DISCRIPTION.
  4.       *  A program to update and print data from an indexed file called 
  5.       * 'FLIGHT. FILE'.Used to translate value codes from the input file
  6.       * to a more readable form are two lookup tables called 'AIRPLANES'
  7.       * and 'AIRPORTS'.
  8.       *  AIRPLANE, contains the airplanes' code and their corresponding
  9.       * discription. AIRPORTS ,contains the airports' code and their
  10.       * corresponding airport names. PRINTER.TEST file version.
  11.       *
  12.       *AUTHOR.        cHArRiOTt.
  13.       *INSTALLATION.
  14.       *DATE-WRITTEN.  SEP 28th 89.
  15.       *DATE-COMPILLED.
  16.       *SECURITY.
  17.        ENVIRONMENT DIVISION.
  18.  
  19.        CONFIGURATION SECTION.
  20.        SOURCE-COMPUTER.   AMSTRAD 1512 .
  21.       *             or you could try   WITH DEBUGGING MODE.
  22.        OBJECT-COMPUTER.
  23.        INPUT-OUTPUT SECTION. 
  24.        FILE-CONTROL.
  25.             SELECT           AIRPORT
  26.             ASSIGN TO        DISK
  27.             ORGANIZATION IS  INDEXED
  28.             ACCESS MODE  IS  DYNAMIC
  29.             RECORD KEY   IS  ER-AIRPORT-CODE
  30.             FILE STATUS  IS  WS-AIRPORT-STATUS.
  31.  
  32.             SELECT           AIRPLANE
  33.             ASSIGN TO        DISK
  34.             ORGANIZATION IS  LINE SEQUENTIAL
  35.             ACCESS MODE  IS  SEQUENTIAL
  36.             FILE STATUS  IS  WS-AIRPLANE-STATUS.
  37.  
  38.             SELECT           FLIGHT
  39.             ASSIGN TO        DISK 
  40.             ORGANIZATION IS  INDEXED
  41.             ACCESS MODE  IS  DYNAMIC
  42.             RECORD KEY   IS  ER-FLIGHT-NUMBER
  43.             FILE STATUS  IS  WS-FLIGHT-STATUS.
  44.  
  45.             SELECT           AIR-PRINT
  46.             ASSIGN TO        PRINTER
  47.             ORGANIZATION IS  LINE SEQUENTIAL
  48.             ACCESS MODE  IS  SEQUENTIAL
  49.             FILE STATUS  IS  WS-PRINTER-STATUS.
  50.       *
  51.        DATA DIVISION.
  52.        FILE SECTION.
  53.        FD AIRPORT
  54.             LABEL RECORD IS  STANDARD
  55.             VALUE OF FILE-ID IS "AIRPORTS.OUT".
  56.        01 ER-AIRPORT-REC.
  57.            03 ER-AIRPORT-CODE      PIC 99.
  58.            03 ER-AIRPORT-NAME      PIC X(15).
  59.  
  60.        FD AIRPLANE
  61.             LABEL RECORD IS STANDARD
  62.             VALUE OF FILE-ID IS "AIRPLANE".
  63.        01 ER-AIRPLANE-REC.
  64.            03 ER-AIRPLANE-CODE     PIC X(4).
  65.            03 ER-MAKE-MODEL        PIC X(16).
  66.  
  67.        FD FLIGHT
  68.            LABEL RECORD IS STANDARD
  69.            VALUE OF FILE-ID IS "FLIGHTOUT.FIL".
  70.        01 ER-FLIGHT-REC.
  71.            03 ER-FLIGHT-NUMBER     PIC 9(5).
  72.            03 ER-AIRPLANE-ID       PIC 9(5).
  73.            03 ER-AIRPLANE-MK-CODE  PIC X(4).
  74.            03 ER-FLIGHT-ORG-CODE   PIC 99.
  75.            03 ER-FLIGHT-DES-CODE   PIC 99.
  76.            03 ER-SEATS-FILLED      PIC 999.
  77.            03 ER-SEATS-TABLE.                                 
  78.               05 ER-SEAT-TABLE     OCCURS 10 TIMES.
  79.                  08 ER-SEAT-LETTER OCCURS  6 TIMES.
  80.                     10 ER-SEAT     PIC 9(4).
  81.  
  82.        FD AIR-PRINT
  83.             LABEL RECORD IS OMITTED
  84.             VALUE OF FILE-ID IS "PRINTER.TEST".
  85.        01 OUT-PRINT-REC.
  86.            03 FILLER               PIC X(80).
  87.       *
  88.        WORKING-STORAGE SECTION.
  89.        01 WS-AIRPORT-REC.
  90.            03 WS-AIRPORT-CODE      PIC 99       VALUE 99.
  91.            03 WS-AIRPORT-NAME      PIC X(15).
  92.       *
  93.        01 WS-AIRPLANE-REC.
  94.            03 WS-AIRPLANE-ARRAY    OCCURS 10 TIMES.
  95.              05 WS-AIRPLANE-CODE   PIC X(4)     VALUE "0000".
  96.              05 WS-MAKE-MODEL      PIC X(16).
  97.       *
  98.        01 WS-FLIGHT-REC.
  99.            03 WS-FLIGHT-NUMBER     PIC 9(5)     VALUE 99.
  100.            03 WS-AIRPLANE-ID       PIC 9(5).
  101.            03 WS-AIRPLANE-MK-CODE  PIC X(4).
  102.            03 WS-FLIGHT-ORG-CODE   PIC 99.
  103.            03 WS-FLIGHT-DES-CODE   PIC 99.
  104.            03 WS-SEATS-FILLED      PIC 999.
  105.            03 WS-SEATS-TABLE.
  106.               05 WS-SEAT-TABLE     OCCURS 10 TIMES.
  107.                  08 WS-SEAT-LETTER OCCURS  6 TIMES.
  108.                     10 WS-SEAT     PIC 9(4).
  109.       *
  110.       *
  111.        01 WS-AIRPLANE-END-FLAG      PIC X        VALUE " ".
  112.            88 WS-AIRPLANE-END                     VALUE "S".
  113.        01 WS-AIRPORT-END-FLAG      PIC X        VALUE " ".
  114.            88 WS-AIRPORT-END                     VALUE "S".
  115.        01 WS-FLIGHT-END-FLAG       PIC X        VALUE " ".
  116.            88 WS-FLIGHT-END                      VALUE "S".
  117.        01 WS-STOP-RUN-FLAG         PIC X        VALUE " ".
  118.        01 WS-ABORT-FLAG            PIC X        VALUE " ".
  119.  
  120.        01 WS-FLIGHT-STATUS         PIC XX       VALUE "00".
  121.        01 WS-AIRPLANE-STATUS       PIC XX       VALUE "00".
  122.        01 WS-AIRPORT-STATUS        PIC XX       VALUE "00".
  123.        01 WS-PRINTER-STATUS        PIC XX       VALUE "00".
  124.  
  125.        01 WS-RECORD-COUNTER        PIC 99       VALUE 00.
  126.        01 WS-PAGE-COUNTER          PIC 99       VALUE 00.
  127.        01 WS-LINE-COUNTER          PIC 99       VALUE 00.
  128.        01 WS-SEAT-ROW              PIC 99       VALUE 00.
  129.        01 WS-SEAT-COLUMN           PIC 99       VALUE 00.
  130.        01 WS-SEAT-NUMBER           PIC 9999     VALUE 0000.
  131.        01 WS-FLIGHT-DEPARTURES     PIC X(15)    VALUE SPACES.
  132.        01 WS-FLIGHT-ARRIVALS       PIC X(15)    VALUE SPACES.
  133.        01 WS-AIRPLANE-NAME         PIC X(16)    VALUE SPACES.
  134.        01 WS-NUMBER-OF-FLIGHTS     PIC 999      VALUE 000.
  135.        01 WS-TOTAL-SEATS-USED      PIC 9(5)     VALUE 000.
  136.        01 WS-TOTAL-SEATS           PIC 9(5)     VALUE 000.
  137.        01 WS-PERCENT-SEATS-FILLED  PIC 9(5)     VALUE 000.
  138.        01 WS-AVERAGE-SEATS-USED    PIC 9(5)     VALUE 000.
  139.        01 WS-AVG-PERCENT-SEATS-FILLED PIC 9(5)   VALUE 000.
  140.        01 WS-REAL-DATE.
  141.            03 WS-REAL-YEAR         PIC XX.
  142.            03 WS-REAL-MONTH        PIC XX.
  143.            03 WS-REAL-DAY          PIC XX.
  144.        01 WS-TEMP-DATE.
  145.            03 WS-TEMP-DAY          PIC XX.
  146.            03 FILLER               PIC X        VALUE "/".
  147.            03 WS-TEMP-MONTH        PIC XX.
  148.            03 FILLER               PIC X        VALUE "/".
  149.            03 WS-TEMP-YEAR         PIC XX.
  150.        01 WS-RESPONCE              PIC X        VALUE " ".
  151.            88 WS-RESPONCE-C        VALUE "C" "c".
  152.            88 WS-RESPONCE-R        VALUE "R" "r".
  153.            88 WS-RESPONCE-Q        VALUE "Q" "q".
  154.            88 WS-RESPONCE-Y        VALUE "Y" "y".
  155.            88 WS-RESPONCE-N        VALUE "N" "n".
  156.            88 WS-RESPONCE-YN       VALUE "Y" "y"
  157.                                          "N" "n".
  158.        01 PRINT-PROG-TITLE.
  159.            03 FILLER               PIC X(5)  VALUE "PAGE ".
  160.            03 WS-PRT-PAGE-COUNTER  PIC 99.
  161.            03 FILLER               PIC X(20) VALUE SPACES.
  162.            03 FILLER               PIC X(25) VALUE
  163.               "AIRLINE SEAT USAGE REPORT".
  164.            03 FILLER               PIC X(20) VALUE SPACES.
  165.            03 WS-PRT-TEMP-DATE     PIC X(8).
  166.        01 PRINT-RECORD.
  167.            03 PRT-AIRPLANE-ID.
  168.               05 FILLER               PIC X(33) VALUE
  169.                "     AIRPLANE-ID               : ".
  170.               05 WS-PRT-AIRPLANE-ID   PIC 9(5).
  171.            03 PRT-AIRPLANE-NAME.
  172.               05 FILLER               PIC X(33) VALUE 
  173.                "     AIRPLANE NAME             : ".
  174.               05 WS-PRT-AIRPLANE-NAME PIC X(16).
  175.            03 PRT-AIRPORT-ORG.
  176.               05 FILLER               PIC X(33) VALUE
  177.                "     AIRPORT - ORIGINATION     : ".
  178.               05 WS-PRT-AIRPORT-ORG   PIC X(15).
  179.            03 PRT-AIRPORT-DES.
  180.               05 FILLER               PIC X(33) VALUE
  181.                "     AIRPORT - DESTINATION     : ".
  182.               05 WS-PRT-AIRPORT-DES   PIC X(15).
  183.            03 PRT-SEATS-FILLED.
  184.               05 FILLER               PIC X(33) VALUE
  185.                "     SEATS FILLED              : ".
  186.               05 WS-PRT-SEATS-FILLED  PIC ZZ9.
  187.            03 PRT-PERCENT-SEATS-FILLED.
  188.               05 FILLER               PIC X(34) VALUE
  189.                "     PERCENTAGE OF SEATS FILLED: %".
  190.               05 WS-PRT-PERCENT-SEATS-FILLED    PIC ZZ9.
  191.        01 PRINT-TOTALS.
  192.            03 PRT-NUMBER-OF-FLIGHTS.
  193.               05 FILLER               PIC X(33) VALUE
  194.                "     NUMBER OF FLIGHTS         : ".
  195.               05 WS-PRT-NUMBER-OF-FLIGHTS       PIC ZZ9.
  196.            03 PRT-TOTAL-SEATS-USAGE.
  197.               05 FILLER               PIC X(33) VALUE
  198.                "     TOTAL SEATS USAGE         : ".
  199.               05 WS-PRT-TOTAL-SEATS-USAGE       PIC ZZ9.
  200.            03 PRT-AVG-PERCENT-SEATS-FILLED.
  201.               05 FILLER               PIC X(34) VALUE
  202.                "     AVERAGE % OF TOTAL SEATS  : %".
  203.               05 WS-PRT-AVG-PERC-SEATS-FILLED   PIC ZZ9.
  204.       *
  205.        SCREEN SECTION.
  206.        01 MENU.
  207.            03 LINE 10 COLUMN 30    HIGHLIGHT VALUE "MENU".
  208.            03 LINE 13 COLUMN 30    VALUE "C)hange flight data".
  209.            03 LINE 14 COLUMN 30    VALUE "R)eport listing".
  210.            03 LINE 15 COLUMN 30    VALUE "Q)uit program".
  211.        01 MENU-RESPONCE.
  212.            03 LINE 17 COLUMN 28    VALUE ">> <<".
  213.            03 LINE 17 COLUMN 30    PIC X USING WS-RESPONCE AUTO.
  214.        01 SC-FLIGHT-NUMBER.
  215.            03 LINE 6 COLUMN 5  VALUE "FLIGHT NUMBER          : ".
  216.            03 LINE 6 COLUMN 30 PIC 9(5) USING WS-FLIGHT-NUMBER.
  217.        01 SC-FLIGHT-REC.
  218.            03 LINE 7 COLUMN 5   VALUE "AIRPLANE ID           : ".
  219.            03 LINE 7 COLUMN 30  PIC 9(5) USING WS-AIRPLANE-ID.
  220.            03 LINE 8 COLUMN 5   VALUE "AIRPLANE MAKE CODE    : ".
  221.            03 LINE 8 COLUMN 30  PIC X(4) USING  WS-AIRPLANE-MK-CODE.
  222.        01 SC-FLIGHT-PLAN.
  223.            03 LINE 10 COLUMN 5   VALUE "FLIGHT ORIGIN CODE    : ".
  224.            03 LINE 10 COLUMN 30  PIC 99 USING  WS-FLIGHT-ORG-CODE.
  225.            03 LINE 11 COLUMN 5   VALUE "FLIGHT DESTIN CODE    : ".
  226.            03 LINE 11 COLUMN 30  PIC 99 USING  WS-FLIGHT-DES-CODE.
  227.        01 SC-SEATS-FILLED.
  228.            03 LINE 14 COLUMN 5  VALUE "SEATS FILLED          : ".
  229.            03 LINE 14 COLUMN 30 PIC 999 USING  WS-SEATS-FILLED.
  230.        01 SC-SEAT-TABLE.
  231.            03 LINE 16 COLUMN 5  VALUE "SEAT ROW              : ".
  232.            03 LINE 16 COLUMN 30 PIC 99 USING WS-SEAT-ROW.
  233.            03 LINE 17 COLUMN 5  VALUE "SEAT COLUMN           : ".
  234.            03 LINE 17 COLUMN 30 PIC 9  USING WS-SEAT-COLUMN.
  235.        01 SC-SEAT-ENTRY.
  236.            03 LINE 18 COLUMN 5  VALUE "SEAT NUMBER           : ".
  237.            03 LINE 18 COLUMN 30 PIC 9999 USING WS-SEAT-NUMBER.
  238.       *
  239.        01 RECORD-AMOUNT.
  240.            03 LINE 20 COLUMN 5   VALUE "RECORD NUMBER         : ".
  241.            03 LINE 20 COLUMN 30  PIC 99 USING WS-RECORD-COUNTER.
  242.        01 SC-INVALID-KEY.
  243.            03 LINE 21 COLUMN 5   
  244.                VALUE "INVALID KEY  FLIGHT NUMBER  'ALREADY EXITS'".
  245.        01 RESPONCE.
  246.            03 LINE 23 COLUMN 5   
  247.                VALUE "IS IT O.K TO WRITE RECORD TO FILE  >".
  248.        01 RESPONCE-LINE.
  249.            03 LINE 23 COLUMN 41  PIC X USING WS-RESPONCE AUTO.
  250.        01 RESPONCE-BLANK.
  251.            03 LINE 23 COLUMN 5   BLANK LINE.
  252.            03 LINE 21 COLUMN 5   BLANK LINE.
  253.       *
  254.        01 BLANK-SCREEN.
  255.            03 BLANK SCREEN.
  256.        01 PROG-DISCRIPTION.
  257.            03 LINE 1 COLUMN 5  VALUE 
  258.                 "THIS PROGRAM PRINTS AND/OR UPDATES THE CONTENTS 'FLIGHT
  259.       -       " FILE' AS DIRECTED".
  260.        01 INPUT-DISCRIPTION.
  261.            03 LINE 3 COLUMN 5  HIGHLIGHT VALUE 
  262.               "THIS SCREEN ALLOWS ENTRY OF 'FLIGHT' FILE DETAILS".
  263.        01 PROG-FINISH.
  264.            03 LINE 24  COLUMN 5 VALUE "TASK COMPLETE".
  265.        01 ERROR-MESSG.
  266.            03 LINE 20  COLUMN 5 VALUE 
  267.               "FILE WOULD NOT OPEN  :FLIGHT :PLANE :PORT :PRINT:".
  268.            03 LINE 21  COLUMN 5 VALUE
  269.               "STATUS ERROR CODES   :       :      :     :     :".
  270.            03 LINE 21  COLUMN 29  HIGHLIGHT PIC XX
  271.               FROM WS-FLIGHT-STATUS.
  272.            03 LINE 21  COLUMN 37  HIGHLIGHT PIC XX
  273.               FROM WS-AIRPLANE-STATUS.
  274.            03 LINE 21  COLUMN 43  HIGHLIGHT PIC XX
  275.               FROM WS-AIRPORT-STATUS.
  276.            03 LINE 21  COLUMN 50  HIGHLIGHT PIC XX
  277.               FROM WS-PRINTER-STATUS.
  278.       *******************************************
  279.       *
  280.        PROCEDURE DIVISION.
  281.        0000-MAIN.
  282.            DISPLAY BLANK-SCREEN.
  283.            DISPLAY PROG-DISCRIPTION.
  284.            OPEN OUTPUT  AIR-PRINT
  285.                 INPUT   AIRPORT
  286.                 INPUT   AIRPLANE
  287.                 I-O     FLIGHT.
  288.                 IF WS-FLIGHT-STATUS    = "00" AND
  289.                    WS-AIRPLANE-STATUS  = "00" AND
  290.                    WS-AIRPORT-STATUS   = "00" AND
  291.                    WS-PRINTER-STATUS   = "00" 
  292.                        PERFORM 1000-MENU UNTIL WS-STOP-RUN-FLAG = "S"
  293.                    ELSE
  294.                        DISPLAY ERROR-MESSG.
  295.            DISPLAY PROG-FINISH.
  296.            CLOSE       FLIGHT
  297.                        AIRPLANE
  298.                        AIRPORT
  299.                        AIR-PRINT.
  300.            STOP RUN.
  301.       *
  302.       *******************************************
  303.       *
  304.        1000-MENU.
  305.            ACCEPT WS-REAL-DATE FROM DATE.
  306.            MOVE WS-REAL-DAY   TO WS-TEMP-DAY.
  307.            MOVE WS-REAL-MONTH TO WS-TEMP-MONTH.
  308.            MOVE WS-REAL-YEAR  TO WS-TEMP-YEAR.
  309.  
  310.            MOVE " " TO WS-RESPONCE.
  311.            DISPLAY BLANK-SCREEN.
  312.            DISPLAY PROG-DISCRIPTION.
  313.            DISPLAY MENU.
  314.            ACCEPT  MENU-RESPONCE.
  315.            IF WS-RESPONCE-C 
  316.                   PERFORM 2000-CHANGE-FLIGHT
  317.              ELSE 
  318.              IF WS-RESPONCE-R
  319.                     PERFORM 3000-REPORT-FLIGHT
  320.                ELSE
  321.                IF WS-RESPONCE-Q
  322.                       MOVE "S" TO WS-STOP-RUN-FLAG.
  323.       *
  324.       *************************************************
  325.       *
  326.        2000-CHANGE-FLIGHT.
  327.            DISPLAY BLANK-SCREEN.
  328.            DISPLAY PROG-DISCRIPTION.
  329.            DISPLAY INPUT-DISCRIPTION.
  330.            MOVE ZERO TO WS-FLIGHT-NUMBER.
  331.            DISPLAY SC-FLIGHT-NUMBER.
  332.            ACCEPT  SC-FLIGHT-NUMBER.
  333.            MOVE WS-FLIGHT-NUMBER TO ER-FLIGHT-NUMBER.
  334.            READ FLIGHT INTO WS-FLIGHT-REC
  335.                  INVALID KEY MOVE "F" TO WS-ABORT-FLAG.
  336.  
  337.            MOVE 1 TO WS-SEAT-ROW.
  338.            MOVE 1 TO WS-SEAT-COLUMN.
  339.  
  340.            DISPLAY SC-FLIGHT-REC.
  341.            DISPLAY SC-FLIGHT-PLAN.
  342.            DISPLAY SC-SEATS-FILLED.
  343.            DISPLAY SC-SEAT-TABLE.
  344.            DISPLAY SC-SEAT-ENTRY.
  345.  
  346.            ACCEPT  SC-FLIGHT-REC.
  347.            PERFORM 2100-FLIGHT-PLAN
  348.                    UNTIL WS-FLIGHT-ORG-CODE NOT EQUAL WS-FLIGHT-DES-CODE.
  349.            PERFORM 2200-SEATS-TABLE
  350.                    UNTIL WS-SEAT-ROW IS GREATER THAN 10.
  351.            MOVE " " TO WS-RESPONCE.
  352.            PERFORM 2300-RESPONCE UNTIL WS-RESPONCE-YN.
  353.            IF WS-RESPONCE-Y
  354.                  MOVE WS-FLIGHT-REC TO ER-FLIGHT-REC
  355.                  WRITE ER-FLIGHT-REC INVALID KEY
  356.                     DISPLAY SC-INVALID-KEY.
  357.       *
  358.       ********************************************
  359.       *
  360.        2100-FLIGHT-PLAN.
  361.            ACCEPT SC-FLIGHT-PLAN.
  362.       *
  363.        2200-SEATS-TABLE.
  364.            MOVE 1 TO WS-SEAT-COLUMN.
  365.            PERFORM 2210-SEATS-ENTRY 
  366.                         UNTIL WS-SEAT-COLUMN IS GREATER THAN 6.
  367.            ADD 1 TO WS-SEAT-ROW.
  368.       *
  369.        2210-SEATS-ENTRY.
  370.            MOVE WS-SEAT (WS-SEAT-ROW WS-SEAT-COLUMN) TO WS-SEAT-NUMBER.
  371.            DISPLAY SC-SEAT-TABLE.
  372.            DISPLAY SC-SEAT-ENTRY.
  373.            ACCEPT  SC-SEAT-ENTRY.
  374.            IF WS-SEAT (WS-SEAT-ROW WS-SEAT-NUMBER)  EQUAL ZERO AND
  375.                             WS-SEAT-NUMBER NOT      EQUAL ZERO
  376.                             ADD 1 TO WS-SEATS-FILLED
  377.                             DISPLAY  SC-SEATS-FILLED
  378.              ELSE
  379.              IF WS-SEAT (WS-SEAT-ROW WS-SEAT-NUMBER) NOT EQUAL ZERO AND
  380.                                WS-SEAT-NUMBER            EQUAL ZERO
  381.                                SUBTRACT 1 FROM WS-SEATS-FILLED
  382.                                DISPLAY    SC-SEATS-FILLED.
  383.            MOVE WS-SEAT-NUMBER TO WS-SEAT (WS-SEAT-ROW WS-SEAT-COLUMN).
  384.            ADD 1 TO WS-SEAT-COLUMN.
  385.       *
  386.       ******************************************
  387.       *
  388.        2300-RESPONCE.
  389.            DISPLAY RESPONCE.
  390.            ACCEPT  RESPONCE-LINE.
  391.       *
  392.       *************************************************
  393.       *
  394.        3000-REPORT-FLIGHT.
  395.            DISPLAY BLANK-SCREEN.
  396.            DISPLAY PROG-DISCRIPTION.
  397.  
  398.            MOVE ZERO TO WS-RECORD-COUNTER.
  399.            PERFORM 3100-READ-AIRPLANE UNTIL WS-AIRPLANE-END.
  400.            MOVE ZERO TO WS-FLIGHT-NUMBER.
  401.            START FLIGHT KEY IS GREATER THAN WS-FLIGHT-NUMBER 
  402.                  INVALID KEY DISPLAY SC-INVALID-KEY.
  403.  
  404.            MOVE ZERO TO WS-PAGE-COUNTER.
  405.            MOVE 56   TO WS-LINE-COUNTER.
  406.            PERFORM 3200-READ-FLIGHT UNTIL WS-FLIGHT-END.
  407.  
  408.            MULTIPLY WS-NUMBER-OF-FLIGHTS BY 60
  409.                                   GIVING WS-TOTAL-SEATS.
  410.            MULTIPLY WS-TOTAL-SEATS-USED  BY 100
  411.                                   GIVING WS-AVG-PERCENT-SEATS-FILLED.
  412.            DIVIDE WS-AVG-PERCENT-SEATS-FILLED BY WS-TOTAL-SEATS
  413.                                   GIVING WS-AVG-PERCENT-SEATS-FILLED.
  414.  
  415.            PERFORM 3300-FLIGHT-TOTALS.
  416.       *
  417.       ******************************************************
  418.       *
  419.        3100-READ-AIRPLANE.
  420.            ADD 1 TO WS-RECORD-COUNTER.
  421.            READ AIRPLANE AT END
  422.               MOVE "S" TO WS-AIRPLANE-END-FLAG.
  423.            IF NOT WS-AIRPLANE-END
  424.               MOVE ER-AIRPLANE-REC TO 
  425.                    WS-AIRPLANE-ARRAY (WS-RECORD-COUNTER).
  426.       *
  427.       ******************************************************
  428.       *
  429.        3200-READ-FLIGHT.
  430.            MOVE SPACE TO WS-ABORT-FLAG.
  431.            READ FLIGHT NEXT RECORD
  432.                 INTO WS-FLIGHT-REC
  433.                 AT END MOVE "S" TO WS-FLIGHT-END-FLAG.
  434.            IF NOT WS-FLIGHT-END
  435.                 MOVE WS-FLIGHT-ORG-CODE TO ER-AIRPORT-CODE
  436.                 READ AIRPORT 
  437.                      INVALID KEY MOVE "A" TO WS-ABORT-FLAG
  438.                 END-READ
  439.                 MOVE ER-AIRPORT-NAME TO WS-FLIGHT-DEPARTURES
  440.  
  441.                 MOVE WS-FLIGHT-DES-CODE TO ER-AIRPORT-CODE
  442.                 READ AIRPORT
  443.                      INVALID KEY MOVE "B" TO WS-ABORT-FLAG
  444.                 END-READ
  445.                 MOVE ER-AIRPORT-NAME TO WS-FLIGHT-ARRIVALS
  446.  
  447.                 SET WS-RECORD-COUNTER TO 1
  448.                 SEARCH WS-AIRPLANE-ARRAY
  449.                     WHEN WS-AIRPLANE-CODE (WS-RECORD-COUNTER) EQUAL
  450.                     WS-AIRPLANE-MK-CODE
  451.                     MOVE WS-MAKE-MODEL TO WS-AIRPLANE-NAME
  452.                 END-SEARCH
  453.                 ADD 1 TO WS-NUMBER-OF-FLIGHTS
  454.                 ADD WS-SEATS-FILLED TO WS-TOTAL-SEATS-USED
  455.                 MULTIPLY WS-SEATS-FILLED BY 10
  456.                             GIVING WS-PERCENT-SEATS-FILLED
  457.                 DIVIDE WS-PERCENT-SEATS-FILLED BY 6
  458.                             GIVING WS-PERCENT-SEATS-FILLED
  459.  
  460.                 IF WS-LINE-COUNTER GREATER THAN 55
  461.                         PERFORM 3210-PRINT-FLIGHT-TITLE
  462.                         PERFORM 3220-PRINT-FLIGHT-REC
  463.                   ELSE
  464.                         PERFORM 3220-PRINT-FLIGHT-REC
  465.  
  466.            END-IF.
  467.       *
  468.       *************************************************************
  469.       *
  470.        3210-PRINT-FLIGHT-TITLE.
  471.       D    display "3210-PRINT-FLIGHT-TITLE.".
  472.  
  473.            ADD 1 TO WS-PAGE-COUNTER.
  474.            MOVE 2 TO WS-LINE-COUNTER.
  475.  
  476.            MOVE SPACES TO OUT-PRINT-REC.
  477.            MOVE WS-PAGE-COUNTER TO WS-PRT-PAGE-COUNTER.
  478.            MOVE WS-TEMP-DATE TO WS-PRT-TEMP-DATE.
  479.            MOVE PRINT-PROG-TITLE TO OUT-PRINT-REC.
  480.            WRITE OUT-PRINT-REC AFTER PAGE.
  481.  
  482.            MOVE SPACES TO OUT-PRINT-REC.
  483.            WRITE OUT-PRINT-REC AFTER 1.
  484.       *
  485.       **************************************************************
  486.       *
  487.        3220-PRINT-FLIGHT-REC.
  488.       D    display "3220-PRINT-FLIGHT-REC.".
  489.  
  490.            MOVE WS-FLIGHT-NUMBER TO WS-PRT-AIRPLANE-ID.
  491.            MOVE SPACES TO OUT-PRINT-REC.
  492.            MOVE PRT-AIRPLANE-ID TO OUT-PRINT-REC.
  493.            WRITE OUT-PRINT-REC AFTER 1.
  494.  
  495.            MOVE WS-AIRPLANE-NAME TO WS-PRT-AIRPLANE-NAME.
  496.            MOVE SPACES TO OUT-PRINT-REC.
  497.            MOVE PRT-AIRPLANE-NAME TO OUT-PRINT-REC.
  498.            WRITE OUT-PRINT-REC AFTER 1.
  499.  
  500.            MOVE WS-FLIGHT-DEPARTURES TO WS-PRT-AIRPORT-ORG.
  501.            MOVE SPACES TO OUT-PRINT-REC.
  502.            MOVE PRT-AIRPORT-ORG TO OUT-PRINT-REC.
  503.            WRITE OUT-PRINT-REC AFTER 1.
  504.  
  505.            MOVE WS-FLIGHT-ARRIVALS TO WS-PRT-AIRPORT-DES.
  506.            MOVE SPACES TO OUT-PRINT-REC.
  507.            MOVE PRT-AIRPORT-DES TO OUT-PRINT-REC.
  508.            WRITE OUT-PRINT-REC AFTER 1.
  509.  
  510.            MOVE WS-SEATS-FILLED TO WS-PRT-SEATS-FILLED.
  511.            MOVE SPACES TO OUT-PRINT-REC.
  512.            MOVE PRT-SEATS-FILLED TO OUT-PRINT-REC.
  513.            WRITE OUT-PRINT-REC AFTER 1.
  514.  
  515.            MOVE WS-PERCENT-SEATS-FILLED TO WS-PRT-PERCENT-SEATS-FILLED.
  516.            MOVE SPACES TO OUT-PRINT-REC.
  517.            MOVE PRT-PERCENT-SEATS-FILLED TO OUT-PRINT-REC.
  518.            WRITE OUT-PRINT-REC AFTER 2.
  519.  
  520.            ADD 7 TO WS-LINE-COUNTER.
  521.       *
  522.       **************************************************************
  523.       *
  524.        3300-FLIGHT-TOTALS.
  525.       D    display "3300-FLIGHT-TOTALS.".
  526.  
  527.            MOVE SPACES TO OUT-PRINT-REC.
  528.            MOVE WS-NUMBER-OF-FLIGHTS TO WS-PRT-NUMBER-OF-FLIGHTS.
  529.            MOVE PRT-NUMBER-OF-FLIGHTS TO OUT-PRINT-REC.
  530.            WRITE OUT-PRINT-REC AFTER 1.
  531.  
  532.            MOVE SPACES TO OUT-PRINT-REC.
  533.            MOVE WS-TOTAL-SEATS-USED TO WS-PRT-TOTAL-SEATS-USAGE.
  534.            MOVE PRT-TOTAL-SEATS-USAGE TO OUT-PRINT-REC.
  535.            WRITE OUT-PRINT-REC AFTER 1.
  536.  
  537.            MOVE SPACES TO OUT-PRINT-REC.
  538.            MOVE WS-AVG-PERCENT-SEATS-FILLED TO 
  539.                 WS-PRT-AVG-PERC-SEATS-FILLED.
  540.            MOVE PRT-AVG-PERCENT-SEATS-FILLED TO OUT-PRINT-REC.
  541.            WRITE OUT-PRINT-REC AFTER 1.
  542.  
  543.            MOVE SPACES TO OUT-PRINT-REC.
  544.            WRITE OUT-PRINT-REC AFTER 1.
  545.       *
  546.       **************************************************************
  547.